package main

import (
	"fmt"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

// 用户模型类
type User struct {
	Id   uint
	Name string
	// 建立一对一的映射
	IDCard IDCard `gorm:"foreignKey:UserId;"` //将IDCard中的字段UserId作为外键
}

func (u User) TableName() string {
	return "user"
}

// 会员卡模型类
type IDCard struct {
	Id     uint
	Number string
	UserId uint
}

func (i IDCard) TableName() string {
	return "idcard"
}

func main() {
	// 连接数据库
	dsn := "root:123456@tcp(192.168.88.11:3306)/model_test?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		panic(err)
	}
	// fmt.Println("数据库连接成功：", db)
	// 迁移
	db.AutoMigrate(&User{}, &IDCard{})
	// 插入数据
	/*
		u1 := User{
			Name: "小红",
			IDCard: IDCard{
				Number: "V888888",
			},
		}
		err = db.Create(&u1).Error
		if err != nil {
			panic(err)
		}
		fmt.Println("添加成功")
	*/
	// 查询数据
	// Preload 预加载
	var user User
	db.Preload("IDCard").Where("id = ?", 2).First(&user)
	fmt.Println(user)
}
